home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 3.iso / dist / fw_qt3.idb / usr / freeware / Qt / include / qnp.h.z / qnp.h
C/C++ Source or Header  |  2002-04-08  |  5KB  |  185 lines

  1. /****************************************************************************
  2. ** $Id:  qt/qnp.h   3.0.3   edited Oct 12 12:18 $
  3. **
  4. ** Definition of Qt extension classes for Netscape Plugin support.
  5. **
  6. ** Created : 970601
  7. **
  8. ** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
  9. **
  10. ** This file is part of the Qt GUI Toolkit.
  11. **
  12. ** This file may be distributed under the terms of the Q Public License
  13. ** as defined by Trolltech AS of Norway and appearing in the file
  14. ** LICENSE.QPL included in the packaging of this file.
  15. **
  16. ** This file may be distributed and/or modified under the terms of the
  17. ** GNU General Public License version 2 as published by the Free Software
  18. ** Foundation and appearing in the file LICENSE.GPL included in the
  19. ** packaging of this file.
  20. **
  21. ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
  22. ** licenses may use this file in accordance with the Qt Commercial License
  23. ** Agreement provided with the Software.
  24. **
  25. ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
  26. ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  27. **
  28. ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
  29. **   information about Qt Commercial License Agreements.
  30. ** See http://www.trolltech.com/qpl/ for QPL licensing information.
  31. ** See http://www.trolltech.com/gpl/ for GPL licensing information.
  32. **
  33. ** Contact info@trolltech.com if any conditions of this licensing are
  34. ** not clear to you.
  35. **
  36. **********************************************************************/
  37.  
  38. #ifndef QNP_H
  39. #define QNP_H
  40.  
  41. #ifndef QT_H
  42. #include "qwidget.h"
  43. #endif // QT_H
  44.  
  45.  
  46. struct _NPInstance;
  47. struct _NPStream;
  48. class QNPInstance;
  49.  
  50. class QNPStream {
  51. public:
  52.     ~QNPStream();
  53.  
  54.     const char* url() const;
  55.     uint end() const;
  56.     uint lastModified() const;
  57.  
  58.     const char* type() const;
  59.     bool seekable() const;
  60.     bool okay() const;
  61.     bool complete() const;
  62.  
  63.     void requestRead(int offset, uint length);
  64.     int write( int len, void* buffer );
  65.  
  66.     QNPInstance* instance() { return inst; }
  67.     QNPStream(QNPInstance*,const char*,_NPStream*,bool);
  68.     void setOkay(bool);
  69.     void setComplete(bool);
  70.  
  71. private:
  72.     QNPInstance* inst;
  73.     _NPStream* stream;
  74.     QString mtype;
  75.     int seek:1;
  76.     int isokay:1;
  77.     int iscomplete:1;
  78. };
  79.  
  80. class QNPWidget : public QWidget {
  81.     Q_OBJECT
  82. public:
  83.     QNPWidget();
  84.     ~QNPWidget();
  85.  
  86.     void setWindow(bool);
  87.     void unsetWindow();
  88.     virtual void enterInstance();
  89.     virtual void leaveInstance();
  90.  
  91.     QNPInstance* instance();
  92.  
  93. private:
  94.     WId saveWId;
  95.     _NPInstance* pi;
  96. };
  97.  
  98. class QNPInstance : public QObject {
  99.     Q_OBJECT
  100. public:
  101.     ~QNPInstance();
  102.  
  103.     // Arguments passed to EMBED
  104.     int argc() const;
  105.     const char* argn(int) const;
  106.     const char* argv(int) const;
  107.     enum Reason {
  108.         ReasonDone = 0,
  109.         ReasonBreak = 1,
  110.         ReasonError = 2,
  111.         ReasonUnknown = -1
  112.     };
  113.     const char* arg(const char* name) const;
  114.     enum InstanceMode { Embed=1, Full=2, Background=3 };
  115.     InstanceMode mode() const;
  116.  
  117.     // The browser's name
  118.     const char* userAgent() const;
  119.  
  120.     // Your window.
  121.     virtual QNPWidget* newWindow();
  122.     QNPWidget* widget();
  123.  
  124.     // Incoming streams (SRC=... tag).
  125.     // Defaults ignore data.
  126.     enum StreamMode { Normal=1, Seek=2, AsFile=3, AsFileOnly=4 };
  127.     virtual bool newStreamCreated(QNPStream*, StreamMode& smode);
  128.     virtual int writeReady(QNPStream*);
  129.     virtual int write(QNPStream*, int offset, int len, void* buffer);
  130.     virtual void streamDestroyed(QNPStream*);
  131.  
  132.     void status(const char* msg);
  133.     void getURLNotify(const char* url, const char* window=0, void*data=0);
  134.  
  135.     void getURL(const char* url, const char* window=0);
  136.     void postURL(const char* url, const char* window,
  137.          uint len, const char* buf, bool file);
  138.  
  139.     QNPStream* newStream(const char* mimetype, const char* window,
  140.     bool as_file=FALSE);
  141.     virtual void streamAsFile(QNPStream*, const char* fname);
  142.  
  143.     void* getJavaPeer() const;
  144.  
  145.     virtual void notifyURL(const char* url, Reason r, void* notifyData);
  146.     virtual bool printFullPage();
  147.     virtual void print(QPainter*);
  148.  
  149. protected:
  150.     QNPInstance();
  151.  
  152. private:
  153.     friend class QNPStream;
  154.     _NPInstance* pi;
  155. };
  156.  
  157.  
  158. class QNPlugin {
  159. public:
  160.     // Write this to return your QNPlugin derived class.
  161.     static QNPlugin* create();
  162.  
  163.     static QNPlugin* actual();
  164.  
  165.     virtual ~QNPlugin();
  166.  
  167.     void getVersionInfo(int& plugin_major, int& plugin_minor,
  168.          int& browser_major, int& browser_minor);
  169.  
  170.     virtual QNPInstance* newInstance()=0;
  171.     virtual const char* getMIMEDescription() const=0;
  172.     virtual const char* getPluginNameString() const=0;
  173.     virtual const char* getPluginDescriptionString() const=0;
  174.  
  175.     virtual void* getJavaClass();
  176.     virtual void unuseJavaClass();
  177.     void* getJavaEnv() const;
  178.  
  179. protected:
  180.     QNPlugin();
  181. };
  182.  
  183.  
  184. #endif  // QNP_H
  185.